Learn in 10 minutes

Learn in 10 minutes

Изучите R за 10 минут

R — это мощный язык программирования и среда для статистических вычислений, анализа данных и визуализации. Это руководство охватывает основные концепции, которые помогут вам начать программировать на R.

1. Начало работы с R

Начнем с простой программы. Откройте R или RStudio и введите следующий код:

print("Hello, World!")

Вы также можете запустить это в консоли R. Результат будет:

[1] "Hello, World!"

Эта простая программа демонстрирует базовую функциональность вывода в R. Функция print() отображает текстовую информацию в консоли.

2. Базовый синтаксис и переменные

Синтаксис R разработан для статистических вычислений и анализа данных. Давайте рассмотрим базовое присваивание переменных и операции.

# Это комментарий
x <- 5  # Присваивание с помощью оператора <-
y = 10   # Присваивание с помощью оператора = (менее распространено)
print(x + y)

Основные правила синтаксиса в R:

  • Присваивание: Используйте <- для присваивания переменных (предпочтительно) или =
  • Комментарии: Однострочные комментарии начинаются с #
  • Функции: Используйте круглые скобки () для вызова функций
  • Векторы: R векторизован — операции работают со всеми векторами целиком

3. Типы данных и структуры

R имеет несколько фундаментальных типов данных и структур для статистических вычислений.

3.1 Базовые типы данных

# Числовой (double)
num <- 3.14
print(class(num))

# Целочисленный
int <- 42L
print(class(int))

# Символьный (строка)
text <- "Hello R"
print(class(text))

# Логический (булев)
flag <- TRUE
print(class(flag))

3.2 Векторы

Векторы — это фундаментальная структура данных в R. Это одномерные массивы, которые могут содержать числовые, символьные или логические данные.

# Создание векторов
numeric_vector <- c(1, 2, 3, 4, 5)
character_vector <- c("яблоко", "банан", "вишня")
logical_vector <- c(TRUE, FALSE, TRUE)

# Операции с векторами
print(numeric_vector * 2)  # Умножить каждый элемент на 2
print(numeric_vector + 1)  # Добавить 1 к каждому элементу
print(length(numeric_vector))  # Получить длину вектора

3.3 Списки

Списки — это гибкие контейнеры, которые могут содержать элементы разных типов.

# Создание списка
my_list <- list(
  name = "Иван",
  age = 30,
  scores = c(85, 92, 78),
  active = TRUE
)

# Доступ к элементам списка
print(my_list$name)
print(my_list[["age"]])
print(my_list[[3]])

3.4 Фреймы данных

Фреймы данных — это самая важная структура данных для анализа данных в R. Они похожи на таблицы со строками и столбцами.

# Создание фрейма данных
df <- data.frame(
  name = c("Анна", "Борис", "Владимир"),
  age = c(25, 30, 35),
  score = c(88, 92, 85)
)

# Просмотр фрейма данных
print(df)
print(str(df))  # Структура фрейма данных
print(summary(df))  # Сводная статистика

4. Базовые операции

R предоставляет богатый набор операторов для математических и логических операций.

# Арифметические операции
a <- 10
b <- 3

print(a + b)  # Сложение
print(a - b)  # Вычитание
print(a * b)  # Умножение
print(a / b)  # Деление
print(a ^ b)  # Возведение в степень
print(a %% b) # Остаток от деления
print(a %/% b) # Целочисленное деление

# Операции сравнения
print(a > b)   # Больше
print(a == b)  # Равно
print(a != b)  # Не равно
print(a <= b)  # Меньше или равно

# Логические операции
print(TRUE & FALSE)  # И
print(TRUE | FALSE)  # ИЛИ
print(!TRUE)         # НЕ

5. Структуры управления

R предоставляет стандартные структуры управления для управления потоком программы.

5.1 Условные операторы if

age <- 20

if (age >= 18) {
  print("Взрослый")
} else if (age >= 13) {
  print("Подросток")
} else {
  print("Ребенок")
}

5.2 Циклы for

# Итерация по вектору
fruits <- c("яблоко", "банан", "вишня")
for (fruit in fruits) {
  print(fruit)
}

# Использование последовательности
for (i in 1:5) {
  print(paste("Число:", i))
}

5.3 Циклы while

count <- 1
while (count <= 5) {
  print(count)
  count <- count + 1
}

6. Функции

Функции в R — это переиспользуемые блоки кода для конкретных задач.

# Базовое определение функции
calculate_area <- function(length, width) {
  area <- length * width
  return(area)
}

# Вызов функции
result <- calculate_area(5, 3)
print(result)

# Функция с параметрами по умолчанию
greet <- function(name = "Гость") {
  return(paste("Привет,", name))
}

print(greet("Анна"))
print(greet())  # Использует параметр по умолчанию

7. Манипуляция данными

R превосходно справляется с манипуляцией данными. Давайте рассмотрим некоторые базовые операции.

# Пример фрейма данных
students <- data.frame(
  name = c("Анна", "Борис", "Владимир", "Дарья"),
  math_score = c(85, 92, 78, 95),
  science_score = c(88, 90, 82, 96),
  grade = c("A", "A", "B", "A")
)

# Выборка данных
print(students[students$math_score > 85, ])  # Строки, где math_score > 85
print(students[, c("name", "math_score")])   # Определенные столбцы

# Добавление новых столбцов
students$total_score <- students$math_score + students$science_score
students$average_score <- students$total_score / 2

print(students)

8. Визуализация данных

R имеет мощные возможности визуализации, особенно с ggplot2.

# Базовое построение графиков (базовый R)
# Создаем пример данных
x <- 1:10
y <- x^2

# Точечная диаграмма
plot(x, y, main = "Точечная диаграмма", xlab = "X", ylab = "Y", col = "blue", pch = 16)

# Линейный график
plot(x, y, type = "l", main = "Линейный график", xlab = "X", ylab = "Y", col = "red")

# Гистограмма
hist(rnorm(100), main = "Гистограмма", xlab = "Значения", col = "lightblue")

8.1 Использование ggplot2 (если установлен)

# Установите и загрузите ggplot2, если еще не установлен
# install.packages("ggplot2")
library(ggplot2)

# Создаем пример фрейма данных
plot_data <- data.frame(
  category = c("A", "B", "C", "D"),
  value = c(25, 40, 30, 35)
)

# Создаем столбчатую диаграмму
ggplot(plot_data, aes(x = category, y = value)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "Пример столбчатой диаграммы", x = "Категория", y = "Значение") +
  theme_minimal()

9. Статистический анализ

R разработан для статистических вычислений. Вот некоторые базовые статистические функции.

# Пример данных
data <- c(23, 45, 67, 34, 56, 78, 89, 12, 45, 67)

# Базовая статистика
print(mean(data))     # Среднее значение
print(median(data))   # Медиана
print(sd(data))       # Стандартное отклонение
print(var(data))      # Дисперсия
print(min(data))      # Минимальное значение
print(max(data))      # Максимальное значение
print(summary(data))  # Пятичисловая сводка

# Корреляция
x <- 1:10
y <- x + rnorm(10)  # Добавляем шум
print(cor(x, y))    # Коэффициент корреляции

# Линейная регрессия
model <- lm(y ~ x)
print(summary(model))

10. Работа с файлами

R предоставляет функции для чтения и записи файлов.

# Запись в файл
write.csv(students, "students.csv", row.names = FALSE)

# Чтение из файла
# read_data <- read.csv("students.csv")
# print(read_data)

# Работа с текстовыми файлами
# writeLines(c("Строка 1", "Строка 2", "Строка 3"), "example.txt")
# text_content <- readLines("example.txt")
# print(text_content)

11. Пакеты и библиотеки

Мощь R заключается в его обширной экосистеме пакетов.

# Установка пакетов
# install.packages("dplyr")  # Для манипуляции данными
# install.packages("ggplot2") # Для визуализации

# Загрузка пакетов
library(dplyr)
library(ggplot2)

# Использование dplyr для манипуляции данными
# students %>%
#   filter(math_score > 85) %>%
#   select(name, math_score) %>%
#   arrange(desc(math_score))

12. Обработка ошибок

R предоставляет механизмы для обработки ошибок.

# Базовая обработка ошибок
tryCatch({
  result <- 10 / 0
  print(result)
}, error = function(e) {
  print(paste("Произошла ошибка:", e$message))
}, finally = {
  print("Это всегда выполняется")
})

# Использование try()
result <- try(10 / 0, silent = TRUE)
if (inherits(result, "try-error")) {
  print("Деление не удалось")
}

13. Продвинутые темы

13.1 Функции семейства Apply

Функции семейства apply мощны для векторизованных операций.

# Создание матрицы
mat <- matrix(1:12, nrow = 3, ncol = 4)
print(mat)

# Применение функций
print(apply(mat, 1, mean))  # Средние по строкам
print(apply(mat, 2, sum))   # Суммы по столбцам

# lapply для списков
my_list <- list(a = 1:5, b = 6:10, c = 11:15)
print(lapply(my_list, mean))  # Среднее каждого элемента списка

# sapply (упрощенная версия)
print(sapply(my_list, mean))

13.2 Манипуляция строками

text <- "Hello R Programming"

print(toupper(text))    # Преобразовать в верхний регистр
print(tolower(text))    # Преобразовать в нижний регистр
print(nchar(text))      # Подсчитать символы
print(substr(text, 1, 5))  # Извлечь подстроку

# Использование пакета stringr (если установлен)
# library(stringr)
# str_split(text, " ")  # Разделить строку

13.3 Дата и время

# Текущая дата и время
current_time <- Sys.time()
print(current_time)

# Форматирование дат
formatted_date <- format(current_time, "%Y-%m-%d")
print(formatted_date)

# Арифметика с датами
today <- Sys.Date()
future_date <- today + 30
print(future_date)

14. Лучшие практики

Вот несколько советов для написания лучшего кода на R:

  • Используйте осмысленные имена переменных
  • Комментируйте свой код соответствующим образом
  • Используйте векторизованные операции вместо циклов, когда это возможно
  • Загружайте пакеты в начале вашего скрипта
  • Используйте последовательные отступы (рекомендуется 2 пробела)
  • Тестируйте свой код с примерными данными
  • Используйте систему контроля версий для ваших проектов

15. Следующие шаги

Чтобы продолжить изучение R:

  1. Практика: Работайте над небольшими проектами анализа данных
  2. Изучение пакетов: Изучите dplyr, ggplot2, tidyr и другие важные пакеты
  3. Онлайн-ресурсы: Используйте документацию R, Stack Overflow и R-bloggers
  4. Книги: “R for Data Science” от Hadley Wickham
  5. Курсы: Пройдите онлайн-курсы по анализу данных с R

R — это мощный инструмент для статистических вычислений и анализа данных. С практикой вы сможете выполнять сложные манипуляции с данными, создавать красивые визуализации и проводить сложные статистические анализы.